@echo off
chcp 65001 >nul
echo ============================================
echo Django数据库迁移工具
echo ============================================
echo.

:: 检查.env文件是否存在
if not exist .env (
    echo ❌ 错误: .env文件不存在
    echo 请先创建.env文件并配置数据库连接信息
    pause
    exit /b 1
)

:: 从.env文件读取数据库配置
for /f "tokens=1,2 delims==" %%a in (.env) do (
    if "%%a"=="MYSQL_HOST" set DB_HOST=%%b
    if "%%a"=="MYSQL_USER" set DB_USER=%%b
    if "%%a"=="MYSQL_PASSWORD" set DB_PASSWORD=%%b
    if "%%a"=="MYSQL_DB" set DB_NAME=%%b
)

echo 数据库配置:
echo - 主机: %DB_HOST%
echo - 用户: %DB_USER%
echo - 数据库: %DB_NAME%
echo.

:: 询问是否备份
set /p BACKUP="是否先备份数据库? (Y/N): "
if /i "%BACKUP%"=="Y" (
    echo.
    echo 📦 正在备份数据库...
    set BACKUP_FILE=backup_%DB_NAME%_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%.sql
    set BACKUP_FILE=%BACKUP_FILE: =0%
    
    mysql -h%DB_HOST% -u%DB_USER% -p%DB_PASSWORD% %DB_NAME% --skip-column-names -e "SELECT 1" 2>nul
    if errorlevel 1 (
        echo ❌ 错误: 无法连接到数据库
        echo 请检查数据库配置和MySQL服务是否运行
        pause
        exit /b 1
    )
    
    mysqldump -h%DB_HOST% -u%DB_USER% -p%DB_PASSWORD% %DB_NAME% > %BACKUP_FILE% 2>nul
    if errorlevel 1 (
        echo ❌ 备份失败
        pause
        exit /b 1
    )
    echo ✅ 备份成功: %BACKUP_FILE%
    echo.
)

:: 询问是否执行迁移
set /p MIGRATE="是否执行数据库迁移? (Y/N): "
if /i not "%MIGRATE%"=="Y" (
    echo 已取消迁移
    pause
    exit /b 0
)

echo.
echo 🔄 正在执行数据库迁移...
echo.

mysql -h%DB_HOST% -u%DB_USER% -p%DB_PASSWORD% %DB_NAME% < database_migration.sql
if errorlevel 1 (
    echo.
    echo ❌ 迁移失败!
    echo 如果已经备份,可以使用以下命令恢复:
    if defined BACKUP_FILE echo mysql -h%DB_HOST% -u%DB_USER% -p%DB_PASSWORD% %DB_NAME% ^< %BACKUP_FILE%
    pause
    exit /b 1
)

echo.
echo ✅ 数据库迁移成功!
echo.

:: 询问是否同步Django迁移
set /p DJANGO_MIGRATE="是否同步Django迁移记录? (Y/N): "
if /i "%DJANGO_MIGRATE%"=="Y" (
    echo.
    echo 🔄 正在同步Django迁移...
    python manage.py migrate --fake-initial
    if errorlevel 1 (
        echo ⚠️  Django迁移同步失败,但数据库已更新
    ) else (
        echo ✅ Django迁移同步成功!
    )
)

echo.
echo ============================================
echo 迁移完成!
echo ============================================
echo.
echo 📝 下一步:
echo 1. 检查数据库表结构是否正确
echo 2. 测试应用功能
echo 3. 如有问题可使用备份文件恢复
echo.
pause
